package com.hhh.petadopt.serviceImpl;

import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;

import com.hhh.petadopt.mapper.LoginMapper;
import com.hhh.petadopt.pojo.User;
import com.hhh.petadopt.service.LoginService;
import com.hhh.petadopt.utils.E3Result;
import com.hhh.petadopt.utils.JedisClient;
import com.hhh.petadopt.utils.JsonUtils;
/**
 * 登录管理
 * @author 杜镇声声
 *
 */
@Service
public class LoginServiceImpl implements LoginService {
	
	@Autowired
	private LoginMapper loginMapper;
	@Autowired
	private JedisClient jedisClient;

	//登录
	@Override
	public E3Result userLogin(User user) {
		//1.判断用户名和密码是否正确
		//根据用户名或者命名查询用户信息
		User userInfo = loginMapper.selectUserByUsername(user);
		//判断用户是否存在
		if(userInfo == null) {
			//用户不存在,返回登录失败
			return E3Result.build(400, "用户名或密码错误!");
		}
		//判断密码是否正确
		if(!DigestUtils.md5DigestAsHex(user.getPassword().getBytes()).equals(userInfo.getPassword())) {
			//2.如果不正确，返回登录失败
			return E3Result.build(400, "用户名或密码错误");
		}
		if(userInfo.getGrantt().equals("0")) {
			//用户账号被冻结
			return E3Result.build(400, "账号被冻结!");
		}
		//3.如果正确，生成token信息
		String token = UUID.randomUUID().toString().replace("-", "");
		// 4、把用户信息写入redis，key：token value：用户信息
		userInfo.setPassword(null);
		jedisClient.set("SESSION:" + token, JsonUtils.objectToJson(userInfo));
		// 5、设置Session的过期时间
		jedisClient.expire("SESSION:" + token, 1800);
		// 6、把token返回
		return E3Result.ok(token);
	}

}
